/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package educar.models;

import educar.db.JPA;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Time;
import java.sql.Date;

/**
 *
 * @author Marce
 */
public class Nota {
   
        private static JPA jpa = new JPA();
        java.util.Date utilDate = new java.util.Date(); //fecha actual
        long lnMilisegundos = utilDate.getTime();
        private Date fecha;
        private Time hora;
        private String nota;
        private String nroAlumno;
	private String codActividad;
        private String solucion; 
        private String DNIdocente;
   
   public Nota(String nota, String nroAlumno, String codActividad, String DNIdocente) {
            utilDate = new java.util.Date(); //fecha actual
            lnMilisegundos = utilDate.getTime();
            this.fecha = new java.sql.Date(lnMilisegundos);
            this.hora = new java.sql.Time(lnMilisegundos);
            this.setNota(nota);
            this.setNroALumno(nroAlumno);
            this.setCodActividad(codActividad);
            this.setSolucion(solucion);
            this.setDNIdocente(DNIdocente);
    }
   
   
    public Nota (String[] nota) {
            utilDate = new java.util.Date(); //fecha actual
            lnMilisegundos = utilDate.getTime();
            this.fecha = new java.sql.Date(lnMilisegundos);
            this.hora = new java.sql.Time(lnMilisegundos);             
            this.setNota(nota[0]);
            this.setNroALumno(nota[1]);
            this.setCodActividad(nota[2]);
            this.setSolucion(nota[3]);
            this.setDNIdocente(nota[4]);
   }   
    
    
    public static boolean authenticate(String nota, String nroAlumno, String codActividad, String DNIdocente) {
	   try {
		Nota n = Nota.getNotaByKeys(nroAlumno, codActividad);
                if ((n.getNota().equals(nota))&& (n.getNroALumno().equals(nroAlumno)) && (n.getCodActividad().equals(codActividad)) && (n.getDNIdocente().equals(DNIdocente))){
                      return true;
                }
                      return false;
	   } catch (NotaNotFound ex) {
		      return false;
	   }
    }

    
    
	public boolean save() {
		try {
			Nota.getNotaByKeys(nroAlumno, codActividad);                      
			return false;
		} catch (NotaNotFound e1) {
			String[] columns = { "fecha", "hora", "nota", "nroAlumno", "codActividad", "DNIdocente"};

			PreparedStatement stm = jpa.newRecord("educar_dev.nota", columns);

			try {
				stm.setDate(1, fecha);
				stm.setTime(2, hora); 
                                stm.setString(3, nota);
                                stm.setString(4, nroAlumno);
                                stm.setString(5, codActividad);
                                stm.setString(6, DNIdocente);
			} catch (SQLException e) {
                                e.printStackTrace();
				return false;
			}
			jpa.create(stm);
			return true;
		}
	}

        
        
        
    public void destroy() {
        String[] keys = {"nroAlumno", "codActividad"};
        String[] ids = {this.getNroALumno(), this.getCodActividad()};
	jpa.destroyByKeys("resolucion", keys , ids);
    }
        
        
    public static Nota getNotaByKeys(String nroAlumno, String codActividad) throws NotaNotFound  {
        ResultSet rs = null;
	Nota n = null;
        String[] key = {"codResolucion", "nroAlumno"};
        String[] id = {nroAlumno, codActividad};
        
        rs = jpa.getByKeys("resolucion", key , id);
        
	try {
		if (rs.next()) {
			n = new Nota(rs.getString(6), rs.getString(7), rs.getString(8), rs.getString(9));
		} else {
			throw new NotaNotFound();
			}
		} catch (SQLException e) {
			e.printStackTrace();
                }

		return n;
    }
    
    
    
    public String getNroALumno() {
		return nroAlumno;
    }
    
    public void setNroALumno(String nroAlumno) {
        this.nroAlumno = nroAlumno;
    }
    
    public String getCodActividad() {
		return codActividad;
    }
    
    public void setCodActividad(String codActividad) {
        this.codActividad = codActividad;
    }
    
    public String getNota() {
		return nota;
    }
    
    public void setNota(String nota) {
        this.nota = nota;
    }

    
    public String getDNIdocente() {
		return DNIdocente;
    }
    
    public void setDNIdocente(String DNIdocente) {
        this.DNIdocente = DNIdocente;
    }
    
    public String getsolucion() {
		return solucion;
    }
    
    private void setSolucion(String solucion) {
        this.solucion = solucion;
    }

    public boolean setNotaByKeys(String oldNroAlumno, String oldCodActividad) {
        String[] keys = {"nroAlumno", "codActividad"};
            String[] ids = {oldNroAlumno, oldCodActividad};             
            jpa.updateByKeys("nota", "nota", nota, keys, ids);
            jpa.updateByKeys("nota", "DNIdocente", DNIdocente, keys, ids);
            return true;
    }
    
       

    
} //fin clase Nota.
